/** @brief Definición de la clase Recurso
 * @file   Recurso.h
 */
#include <string>
#include "PermGrp.h"
#include "PermUsu.h"
#include "PermOtros.h"
#include <vector>

using namespace std;

#ifndef RECURSO_H
#define	RECURSO_H

/**@brief Recurso*/
class Recurso {
protected:
    static int ID;
    int id;
    string nombre;
    string ruta;
    string fecha;
    PermUsu *permUsu;
    PermGrp *permGrp;
    PermOtros *permOtros;
    
    void SetPermOtros(PermOtros* permOtros);
    PermOtros* GetPermOtros() const;
    void SetPermGrp(PermGrp* permGrp);
    PermGrp* GetPermGrp() const;
    void SetPermUsu(PermUsu* permUsu);
    PermUsu* GetPermUsu() const;
    
public:
    Recurso(string nombre="sin nombre", string ruta="/",string fecha="00-00-0000",Usuario *_usuario=0,Grupo *_grupo=0,int _permUsu=0,int _permGrp=0,int _permOtros=0);
    Recurso(const Recurso& orig);
    virtual ~Recurso();
    void SetFecha(string fecha);
    string GetFecha() const;
    void SetRuta(string ruta);
    string GetRuta() const;
    void SetNombre(string nombre);
    string GetNombre() const;
    //void SetId_recurso(int id_recurso);
    int GetId_recurso() const;
    Usuario* getUsuario();
    Grupo* getGrupo();
    void chmod(int u,int g, int o);
    void verPermisos();
    string PermisosString() const;
    void chown(Usuario* _usuario);
    void chgrp(Grupo* _grupo);
    void visualiza(const vector<Recurso*> v);
    string toCSV() const;
    void fromCSV(string cadena);
    void guardaCSV(const vector<Recurso*> v,string archivo);
    int recuperarCSV(vector<Recurso*> v,string archivo);    
};

#endif	/* RECURSO_H */

